

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class RejectDemo {
    public static void main(String[] args) throws Exception{
        User u = new User();
        u.setId(1);
        u.setIntro("test");
        System.out.println(u);
        System.out.println(existNull(u));
        System.out.println(u);
    }

    public static boolean existNull(Object o)throws Exception{
        //获取传入的o的class对象
        Class c = o.getClass();
        //通过class对象  获取所有的属性  Declared可以获取private的属性  如果不加  就只能获取public的属性
        //需要注意的是  只能获取到当前类的属性  父类的属性无法获取
        Field[] fields = c.getDeclaredFields();
        for (Field field : fields) {
            //获取当前属性的名字
            String fieldName = field.getName();
            //这三行   是用来拼接get方法的方法名的
            char[] fieldNameCharArray = fieldName.toCharArray();
            System.out.println(fieldNameCharArray);
            // 将首字母转大写
            fieldNameCharArray[0] -= 32;
            String getMethodName = "get" + String.valueOf(fieldNameCharArray);

            //获取当前这个属性的get方法的对象
            Method method = c.getMethod(getMethodName);
            System.out.println(method.getName());
            //method.invoke  是用来执行方法的
            Object invoke = method.invoke(o);
            System.out.println(invoke);
            if (invoke==null) {
                return true;
            }
        }

        return false;
    }
}
